One of the most popular types of data storage devices used on computer systems of all types is termed an IDE or ATA device. The name derives from the interface standard used by the device in order to connect to a computer system. The ATA Standard is recognized on an industry-wide basis and is administered under the auspices of the American National Standards Institute (ANSI). By following the Standard, computer users can obtain devices from a variety of manufacturers with the assurance that they will inter-operate.
The ATA Standard has enabled storage device manufacturers to produce low cost, high performance products. There are several elements in a computer system which are required in order for an ATA device to operate. These are the ATA devices themselves (Device), a host adapter (Adapter), a cable that couples them together (Cable) and the host computer software driver (Driver) that controls the Devices in the flow of data to and from them. The Adapter can be a separate item connected to or built into the host system (Host). Up to two Devices may be attached to one Cable. The data and control path provided by the Adapter, using the protocols defined in the ATA Standard is often referred to as a Channel. Thus one Channel may control up to two Devices. There is nothing to preclude an Adapter from supporting several Channels.
Although the ATA Standard allows the attachment of two Devices on one Channel, it is limited by its current ability to perform tasks with respect to only Device at a time. To overcome this limitation, the Standard is being changed to allow commands to be sent to both Devices and/or multiple commands to be sent to the same Device. This allows commands to be queued and executed in a more efficient manner by both Devices.
If a Device finishes a command and requires service from the Host, it can request service by changing the state of an Interrupt line on the Channel. The ATA interface is defined in such a way as to allow only the currently selected Device to cause an interrupt on the Channel. To overcome this, the host Driver has to alternately select (Poll) each Device to allow the Devices a chance to indicate that they want service.
In conventional computer systems, Polling is achieved by the Driver in the Host performing a sequence of input/output instructions to change the Device currently selected and read the status of the Device. This has to be alternately performed on each Device on a Channel. In multiple-channel situations, the Host has to select Devices on each Channel; one at a time. This software Polling can either consume a great deal of processor time or must rely on some other form of Host interrupt (e.g., a timer interrupt) to only Poll periodically. In the later case, if the timer, if the timer interrupt has a long period, the disk response latency is greatly increased; if it has a short period the processing overhead is increased. Using either software Polling methods results in excessive use of the Hosts resources and results in an overall and satisfactory system performance.